#include "userDao.h"
// 添加用户信息
void add(User *user)
{
    sqlite3 *db = NULL;
    int retVal = sqlite3_open("/home/lss/test/test.db", &db);
    if (retVal != 0)
    {
        perror("open db  error!");
        return;
    }
    char sql[256];
    sprintf(sql, "insert into t_user(id,name) values(%d,'%s');", user->id, user->name);
    char **errorMsg;
    sqlite3_exec(db, sql, NULL, NULL, errorMsg);
    if (errorMsg != NULL)
    {
        printf("%s\n", *errorMsg);
    }
    sqlite3_close(db);
}
// 拿到用户信息
void getOne(int id)
{

    sqlite3 *db = NULL;
    int retVal = sqlite3_open("/home/lss/test/test.db", &db);
    if (retVal != 0)
    {
        perror("open db  error!");
        return ;
    }
#if 0
    //查询指定用户的信息
    char sql[256];
    sprintf(sql,"select * from t_user where id = %d;",id);
#endif
    char *errorMsg;
    char **pResult;
    int nRow;
    int nCol;
    // SQLITE_API int sqlite3_get_table(
    //     sqlite3 * db,      /* 要打开的数据库 */
    //     const char *zSql,  /* 需要执行的sql语句 */
    //     char ***pazResult, /* 返回的结果集的接受参数 */
    //     int *pnRow,        /* 结果集行数 */
    //     int *pnColumn,     /* 结果集列数 */
    //     char **pzErrmsg    /* 错误信息 */
    // );
    retVal = sqlite3_get_table(db, "select * from t_user;", &pResult, &nRow, &nCol, &errorMsg);
    if (retVal != SQLITE_OK)
    {
        printf("%s\n", errorMsg);
    }
    int index = nCol;
    // dbResult 第一行数据是字段名称，从 nColumn 索引开始才是真正的数据
    printf("查到%d条记录\n", nRow);
    for (int i = 0; i <= nRow; ++i)
    {
        if (i != 0)
        {
            printf("第 %d 条记录\n", i);
        }
        for (int j = 0; j < nCol; ++j)
        {
            int index = i * nCol + j;
            printf("字段名:%s > 字段值:%s\n", pResult[j], pResult[index]);
        }
    }
    // 释放
    sqlite3_close(db);
}